package com.cloudcc.mobile.dao;

import java.util.List;

import com.cloudcc.cloudframe.bus.DynamicEventList.SendCommentEvent;
import com.cloudcc.cloudframe.bus.DynamicEventList.SendDynamicEvent;
import com.cloudcc.cloudframe.bus.EventList.DeleteCommentEvent;
import com.cloudcc.cloudframe.bus.EventList.DeleteDynamicEvent;
import com.cloudcc.cloudframe.bus.EventList.DynamicEvent;
import com.cloudcc.cloudframe.bus.EventList.DynamicSingleEvent;
import com.cloudcc.cloudframe.bus.EventList.FavotiteDynamicEvent;
import com.cloudcc.cloudframe.bus.EventList.LikeCommentEvent;
import com.cloudcc.cloudframe.bus.EventList.LikeDynamicEvent;
import com.cloudcc.cloudframe.bus.EventList.VoteDynamicEvent;
import com.cloudcc.cloudframe.model.param.DynamicParam;
import com.cloudcc.cloudframe.model.param.FavoriteParam;
import com.cloudcc.cloudframe.model.param.LikeCommentParam;
import com.cloudcc.cloudframe.model.param.LikeDynamicParam;
import com.cloudcc.cloudframe.model.param.RemoveCommentParam;
import com.cloudcc.cloudframe.model.param.RemoveDynamicParam;
import com.cloudcc.mobile.entity.AddImageInfo;
import com.cloudcc.mobile.entity.VoteMicroPost;
import com.cloudcc.mobile.entity.addmicropost.AddMicroPostDMany;
import com.cloudcc.mobile.entity.comment.AddMicroComment;
import com.cloudcc.mobile.event.BeauEventList.DynamicListEvent;

public interface DynamicEngine {

	/** * 获取我所追随的chatter内容 * @param expressions* @return */
	@Deprecated
	String getMyChatter(String data);

	/** * 获取我所追随的chatter内容 01 9张图片的接口 * @param expressions* @return */
	@Deprecated
	String getMyChatter01(String data);

	/** * 涉及我的更新，我所收藏的微贴， 所有微贴 * @param data * @return */
	@Deprecated
	String getChatters(String data);

	@Deprecated
	String getChatters01(String data);

	/**
	 * 获取 涉及我的更新，我收藏的微帖 ，全部微帖
	 * 
	 * @param param
	 *            规定参数
	 * @param event
	 */
	void getDynamics(String serviceNmae, DynamicParam param, DynamicEvent event);
	
	/** 获取与记录相关的微贴
	 * @param param
	 * @param event
	 */
	void getDynamicsAboutRecord(DynamicParam param,DynamicListEvent event);

	/**
	 * 收藏动态
	 * 
	 * @param param
	 * @param event
	 */
	void FavoriteDynamic(FavoriteParam param, FavotiteDynamicEvent event);

	/**
	 * 喜欢某条动态
	 * 
	 * @param param
	 * @param event
	 */
	void LikeDynamic(LikeDynamicParam param, LikeDynamicEvent event);

	/**
	 * 喜欢某条评论
	 * 
	 * @param param
	 * @param event
	 */
	void LikeComment(LikeCommentParam param, LikeCommentEvent event);

	/**
	 * 移除 自己发布的 动态
	 * 
	 * @param param
	 * @param event
	 */
	void deleteDynamic(RemoveDynamicParam param, DeleteDynamicEvent event);

	/**
	 * 删除评论
	 * 
	 * @param param
	 * @param event
	 */
	void deleteComment(RemoveCommentParam param, DeleteCommentEvent event);
	
	/**
	 * 投票
	 * @param param
	 * @param event
	 */
	void voteDynamic(VoteMicroPost param,VoteDynamicEvent event);

	/**
	 * 单条动态获取
	 * 
	 * @param param
	 * @param event
	 */
	void getDynamic(DynamicParam param, DynamicSingleEvent event);

	/**
	 * 发送 评论
	 * 
	 * @param param
	 * @param event
	 */
	void sendComment(AddMicroComment param, SendCommentEvent event);

	/**
	 * 发布 微贴(动态)
	 * 
	 * @param params
	 * @param event
	 */
	<T> void sendDynamic(T params, SendDynamicEvent event, String serviceName);

	/**
	 * 发布微贴 （带有图片的 微贴）
	 * 
	 * @param images
	 * @param param
	 */
	void uploadPhoto(List<AddImageInfo> images, final AddMicroPostDMany param,
			final SendDynamicEvent event);

	// 测试环境
	String voteMicroPost(String data);
}
